#ifndef ESTRATEGIAINDICE_H_
#define ESTRATEGIAINDICE_H_

#include "includes.h"



namespace Toolkit {

class Clave;

class Indice {
public:

	Indice(){}

	virtual ~Indice(){}

	/*
	 * En el caso de que la clave exista, el metodo devuelve true y le asigna al argumento
	 * posicionBloque la posicion del bloque que contiene el dato a eliminar. En el caso que no
	 * exista la clave buscada en el indice, devuelve false.
	 */
	virtual bool eliminar(const Clave &clave) = 0;
	/**
	 * Inserta una clave junto a la posicion del Bloque al cual hace referencia.
	 */
	virtual void insertar(const Clave & clave, const unsigned long int &posicionBloque) = 0;

	/**
	 * En el caso de encontrar la clave, el metodo devuelve true y se le asigna al argumento
	 * posicionBloque la posicion relativa del bloque donde se encuentra el dato cuya clave
	 * asignada es la pasada por argumento.
	 */
	virtual bool buscar(const Clave &clave, unsigned long int &posicionBloque) const = 0;

};

}

#endif /* ESTRATEGIAINDICE_H_ */
